package com.itfenghuang.day02作业;
//      1. 代码块是什么，分为哪几类，各自有什么特点？
//              局部代码块:可以让变量更早的消失  从而节约资源
//              构造代码块:可以将多个方法中相同的内容提取出来   放在构造代码中
//              静态代码块:游戏中创建角色时进行初始化
//      2. 子父类都有静态代码块、构造代码块、构造方法，那么他们六者之间的执行流程是什么？               构造代码块
//              父静代码块-->子静代码块-->父构造代码块-->子构造代码块-->父构造方法-->子构造方法
//      3. 继承的好处、弊端分别是什么？
//               优点:     1.提高代码的复用性
//                         2.类与类之间产生关系,这种关系是构成多态的前提
//              缺点:     提高了代码的耦合性
//      4. Java中继承的注意事项是什么？我们什么时候使用继承?
//                注意事项:一个类中不可以多继承   可以多层继承   不可以循环继承
//                继承?  两个类中是  is   a关系的时候
//      5. this关键字和super关键字分别代表什么，以及他们各自的作用分别是什么？
//                this:本类对象的引用    super:父类储存空间的标识
//                作用在成员变量中 变量名相同  子类用this    父类用super
//      7. 为什么子类中所有的构造方法默认都会访问父类的空参构造？
//                因为每一个子类中的构造类中的第一行都默认了一个super
//      8. super关键字和this关键字可以在构造方法中共存吗？
//                不能
//      9.Overload和Override的区别是什么？方法重载能改变返回值类型吗？
//                重写:在继承关系下子类对父类的一个重写
//                重载:在类中多个方法名相同,参数列表不同     与返回值无关
//      10.final关键字可以做什么,有什么特点?
//                1修饰类   2方法    3变量
//                1.不能够继承   2 被修饰的方法不能重写   3被修饰的变量不能二次赋值

//11. 分析以下需求，并用代码实现
//        1.定义Person类
//        属性：
//        姓名name、性别gender、年龄age、国籍nationality；
//        方法：
//        吃饭eat、睡觉sleep，工作work。
//        2.根据人类，创建一个学生类Student
//        增加属性：
//        学校school、学号stuNumber；
//        重写工作方法（学生的工作是学习）。
//        3.根据人类，创建一个工人类Worker
//        增加属性：
//        单位unit、工龄workAge；
//        重写工作方法（工人的工作是盖房子）。
//        4.根据学生类，创建一个学生干部类 StudentLeader
//        增加属性：
//        职务job；
//        增加方法：开会meeting（学生干部喜欢开会!）。
//        5.编写测试类分别对上述3类具体人物进行测试。
//
//        6.要求运行结果:
//        学生需要学习!
//        工人的工作是盖房子!
//        学生干部喜欢开会!
public class day_02作业 {
    public static void main(String[] args) {
        Student student = new Student("凤凰",110);
        student.work();
    }
}
abstract class Person{
    public String name;
    public String gender;
    public int age;
    public String nationality;

    public Person() {
    }

    public Person(String name, String gender, int age, String nationality) {
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.nationality = nationality;
    }

    public  void eat(){
        System.out.println("吃嘎嘎");
    };
    public  void sleep(){
        System.out.println("睡觉觉");
    };
    public abstract void work();
}
class Student extends Person{
    public String school;
    public int stuNumber;

    public Student() {
        super();
    }

    public Student(String school,int stuNumber) {
        super("小心","男",17,"中国");
    }

    @Override
    public void work() {
        System.out.println(name+"   "+gender+"  "+age+"  "+nationality+"  "+school+" "+stuNumber+"   "+"学习");
    }
}
class Worker extends Person{
    public String nuit;
    public String workAge;

    public Worker() {
    }

    public Worker(String nuit,String workAge) {
        super();
    }

    @Override
    public void work() {
        System.out.println("盖房子");
    }
}
class StudentLeader extends Student{
    public String job;

    public StudentLeader() {
    }

    public StudentLeader(String job) {
        super();
    }

    public void meeting(){
        System.out.println("开会");
    }
}